/**
 * 
 */
package com.nari.basic.service;

import java.util.List;

import com.nari.basic.model.IRole;
import com.nari.coreframe.service.IGenericService;

/**
 * 
 * @author Xiaopeng
 * @date 2013-7-18
 */
public interface IRoleService extends IGenericService<IRole, String> {

	/**
	 * 通过用户唯一识别码查询其对应的角色信息
	 * @param userUID
	 * @return
	 * @throws Exception
	 * @author Xiaopeng
	 * @date 2013-7-22
	 */
	public List<IRole> queryRolesByUserUID(String userUID) throws Exception;
	
	/**
	 * 通过用户登录名查询其授权的角色编号
	 * @param userID
	 * @return
	 * @throws Exception
	 * @author Xiaopeng
	 * @date 2014-5-13
	 */
	public String queryRoleIDsByUserID(String userID) throws Exception;
	
	/**
	 * 查询系统所有角色信息，并对角色列表排序
	 * @param roleID 角色编号（可选）
	 * @param roleName 角色名称（可选）
	 * @return
	 * @throws Exception
	 * @author Xiaopeng
	 * @date 2013-7-26
	 */
	public List<IRole> queryRoleInOrder(String roleID, String roleName) throws Exception;
	
	/**
	 * 根据角色编号查询角色信息
	 * @param roleID
	 * @return
	 * @throws Exception
	 * @author Xiaopeng
	 * @date 2014-1-12
	 */
	public IRole queryRoleInfoByRoleID(String roleID) throws Exception;
	
	/**
	 * 统计相同角色编号的角色个数(排除指定的角色)
	 * @param roleID
	 * @param roleUuid
	 * @return
	 * @throws Exception
	 * @author Xiaopeng
	 * @date 2014-7-21
	 */
	public int countRolesByRoleID(String roleID, String roleUuid) throws Exception;
}
